package com.xuzm.system.controller;

import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.xuzm.system.entity.UserLogin;
import org.springframework.web.bind.annotation.*;

/**
 * 登录测试
 */
@RestController
@RequestMapping("/acc/")
public class LoginController {

    // 测试登录  ---- http://localhost:8081/acc/doLogin?name=zhang&pwd=123456
    @GetMapping("doLogin")
    public SaResult doLogin(String name, String pwd) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("zhang".equals(name) && "123456".equals(pwd)) {
            // 这里10001表示用户的id
            StpUtil.login(10001);
            return SaResult.ok("登录成功");//
        }
        return SaResult.error("登录失败");
    }

    // 测试登录  ---- http://localhost:8081/acc/doLogin?{name=zhang&pwd=123456}
    @PostMapping("doLoginPost")
    public SaResult doLoginPost(@RequestBody UserLogin userLogin) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if("zhangsan".equals(userLogin.getName()) && "123456".equals(userLogin.getPwd())) {
            // 这里10001表示用户的id
            StpUtil.login(10001);
            return SaResult.ok("登录成功post");//
        }
        return SaResult.error("登录失败post");
    }


    private static byte[] hexStringToByteArray(String hexStr) {
        int len = hexStr.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            // 将每两个16进制字符转换为一个字节
            data[i / 2] = (byte) ((Character.digit(hexStr.charAt(i), 16) << 4)
                    + Character.digit(hexStr.charAt(i+1), 16));
        }
        return data;
    }

    public static void main(String[] args) {

    }

    // 查询登录状态  ---- http://localhost:8081/acc/isLogin
    @RequestMapping("isLogin")
    public SaResult isLogin() {
        return SaResult.ok("是否登录：" + StpUtil.isLogin());
    }

    // 查询 Token 信息  ---- http://localhost:8081/acc/tokenInfo
    @RequestMapping("tokenInfo")
    public SaResult tokenInfo() {
        return SaResult.data(StpUtil.getTokenInfo());
    }

    // 测试注销  ---- http://localhost:8081/acc/logout
    @RequestMapping("logout")
    public SaResult logout() {
        StpUtil.logout();
        return SaResult.ok();
    }

}
